package com.example.ck.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.ck.dao.NewprojectDao;
import com.example.ck.entity.Newproject;
import com.example.ck.service.NewprojectService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;

@Service
public class NewProjectServiceImpl implements NewprojectService {
    @Autowired
    private NewprojectDao newprojectDao;

    /**
     * 新建项目申请
     */
    @Override
    public boolean CreateProject(Newproject newproject) {
        newproject.setCreateTime(LocalDateTime.now());
        int i = newprojectDao.insert(newproject);
        return i > 0;
    }

    /**
     * 根据用户名查询所有创建的项目
     * 普通用户
     */
    @Override
    public List<Newproject> queryProject(String username) {
        QueryWrapper qw = new QueryWrapper<>();
        qw.eq("username", username);
        List<Newproject> newprojects = newprojectDao.selectList(qw);
        return newprojects;
    }

    /**
     * 普通用户根据项目id来修改项目状态 -> 1 已提交
     */
    @Override
    public boolean submitProject(int id) {
        QueryWrapper qw = new QueryWrapper<>();
        qw.eq("id", id);
        Newproject newproject = newprojectDao.selectOne(qw);
        newproject.setFlag("1");
        return newprojectDao.updateById(newproject) > 0;
    }

    /**
     * 查询所有创建的项目
     * 管理员
     */
    @Override
    public List<Newproject> queryAllProject() {
        List<Newproject> newprojects = newprojectDao.selectList(null);
        return newprojects;
    }

    /**
     * 查询所有已提交的项目
     * 管理员
     */
    @Override
    public List<Newproject> queryAllProjectByState() {
        QueryWrapper qw = new QueryWrapper<>();
        // 查询所有已提交的项目
        qw.eq("flag", 1);
        List list = newprojectDao.selectList(qw);
        return list;
    }

    /**
     * 将已经提交个专家的项目状态改为待审核
     * 管理员
     */
    @Override
    public void updateProjectState(Integer id) {
        QueryWrapper qw = new QueryWrapper<>();
        qw.eq("id", id);
        Newproject newproject = newprojectDao.selectOne(qw);
        newproject.setFlag("2"); // 设置为待审核
        newprojectDao.updateById(newproject);
    }

    /**
     * 根据id移除项目申请
     */
    @Override
    public boolean RemoveProject(Integer id) {
        QueryWrapper qw = new QueryWrapper<>();
        qw.eq("id", id);
        int i = newprojectDao.delete(qw);
        return i > 0;
    }

    /**
     * 根据id查询项目信息
     */
    @Override
    public Newproject queryProjectById(Integer id) {
        return newprojectDao.selectById(id);
    }
}
